在看<<深入浅出>>这本书时遇到的问题

来源:百度知道 编辑:UC知道 时间:2024/05/19 02:43:53
我在这本书的第一篇第二章C++的一些重要性质this指针中看到的如下的讲解:(原文如下)
.
.
.
多出来的参数,就是所谓的this指针.至于类之中,成员函数的定义:
class CShape
{
...
public:
void setcolor(int color){m_color=color;}
};
被编译器编译过后,其实是:
class CShape
{
...
public:
void setcolor(int color,(CShape *)this){this->m_color=color;}
};
.
.
我看到这里产生了疑问:我觉得被编译器编译过后:
void setcolor(int color,(CShape *)this)中编译器加上去的(CShape *)this 应该没有括号,而是:void setcolor(int color,CShape *this),
这样相当于是定义this为CShape类型的指针,这样好理解些,如果像书上所说的那样就是强制类型转换了,我不知道我的想法是否正确。请高手赐教。

这个(CShape *)表示形参的类型,由于是在函数定义的时候给出而不是调用的时候给出,所以不会被编译器理解为强制类型转换,实际上这么写更能表示this是一个(CShape *)类型

是一样的。

比如

int* a;
int *a;
是一样的。

其实我们大部分都用第一种的。